#include <iostream>
using namespace std;

// 在给定的作用域中一个形参只能被赋予一次默认参数。换句话说，函数的后续声明只能为之前那些没有默认值的形参添加默认值，
// 而且该形参右侧的所有形参必须都有默认值。

// 下面这种声明方式是正确的。第一次声明时为 c 指定了默认值，第二次声明时为 b 指定了默认值；
// 第二次声明是添加默认参数。需要提醒的是，第二次声明时不能再次给 c 指定默认参数，否则就是重复声明同一个默认参数。
void func(int n, float b, char c = '$');
void func(int n, float b = 6.6, char c);

int main()
{
    // 为所有参数传值
    func(10, 3.5, '#');

    // 为n、b传值，相当于调用func(20, 9.8, '$')
    func(20, 9.8);

    // 只为n传值，相当于调用func(30, 6.6, '$')
    func(30);

    return 0;
}
